|
ミューテータ関数
このページは、2008 年 04 月 07 日に最後に変更されました。
edocs ホーム > BEA AquaLogic Data Services Platform 3.0/3.2 ドキュメント > ALDSP 3.2 新機能のドキュメント
|
| ALDSP は、(XDM) のインスタンスおよびインスタンスの変更に関する情報を表すのに、拡張された XQuery データ モデル (XXDM)、XQuery データ モデル (XDM) の拡張子を使用します。 |
fn-bea:changed-element() 関数は、変更されていない changed-element に要素を促進することができます。その後、組み込みのミューテータ関数を使用して、結果の changed-element を変更することができます。
fn-bea:changed-element() 関数には以下のシグネチャがあります。
fn-bea:changed-element($e as element()) as changed-element()
以下の呼び出しでは、$cc を $c で表現された要素にタイプ customer の変更されていない changed-element として宣言します。
declare $cc as changed-element(customer) := fn-bea:changed-element($c);
fn-bea:insert-into() 関数では、指定された XPath 場所の XXDM インスタンスにノードを挿入できます。
fn-bea:insert-into() 関数には以下のシグネチャがあります。
fn-bea:insert-into($ce as changed-element(), $path as xs:string, $value as node()) as changed-element()
説明は次のとおりです。
変数 $cc にバインドされている以下の値を含む変換されている customer を考慮します。
<customer ssn="XXX-XX-XXX">
<name>
<first>Thomas</first>
<last>Smith</last>
</name>
<address>...</address>
<address>...</address>
<orders>
<order>...</order>
<order>...</order>
<orders>
<customer>
次の呼び出しを考慮します。
set $cc := fn-bea:insert-into($cc, "name", <middle>Paul</middle>);
Customer のスキーマでは、ミドルネーム (middle) の要素を name の子要素として要素の first と last の間に入力できることを前提とすれば、呼び出しによって (middle) 要素が次のように挿入されます。
<customer ssn="XXX-XX-XXX">
<name>
<first>Thomas</first>
<middle>Paul</middle>
<last>Smith</last>
</name>
...
<customer>
次の呼び出しを考慮します。
set $cc := fn-bea:insert-into($cc, ".", <address>...<city>York</city></address>);
呼び出しは、追加のアドレス要素を customer 要素に以下のとおり挿入します。
<customer ssn="XXX-XX-XXX">
<name>...</name>
<address>...</address>
<address>...<city>York</city></address>
<address>...</address>
<orders>...</orders>
<customer>
次の呼び出しを考慮します。
set $cc := fn-bea:insert-into($cc, "orders/order[2]", attribute paid { fn:true() });
呼び出しは、以下に示しているように、paid 属性を 2 番目の位置に挿入します。
<customer ssn="XXX-XX-XXX"> ... <orders> <order>...</order> <order paid="true">...</order> <orders> <customer>
fn-bea:delete() 関数では、XXDM インスタンスで指定された XPath 場所のノードを削除できます。関数は指定された子孫を含めないインスタンスのコピーを返します。
fn-bea:delete() 関数には以下の署名があります。
fn-bea:delete($ce as changed-element(), $path as xs:string) as changed-element()
説明は次のとおりです。
変数 $cust が以前の例に示された値にバインドされると仮定します。
次の呼び出しを考慮します。
set $cc := fn-bea:delete($cc, "address[2]");
呼び出しによって、$cust のアドレスの 2 番目の子要素が削除され、以下に示す値になります。
<customer ssn="XXX-XX-XXX">
<name>...</name>
<address>...</address>
<orders>...<orders>
<customer>
次の呼び出しを考慮します。
set $cc := fn-bea:delete($cc, "@ssn");
呼び出しによって $cust の ssn 属性が削除され、以下に示す値になります。
<customer> <name>...</name> <address>...</address> <address>...</address> <orders>...<orders> <customer>
fn-bea:replace-value() 関数では、指定された XPath 場所の XXDM インスタンスのノードの値を置き換えることができます。関数は、置き換えられた値を含むインスタンスのコピーを返します。
fn-bea:replace-value() 関数には以下の署名があります。
fn-bea:replace-value($ce as changed-element(), $path as xs:string, $value as xdt:anyAtomicType*) as changed-element()
説明は次のとおりです。
| ターゲット ノードには単純なコンテンツがない場合、この関数でエラーが発生します。 |
変数 $cc が以前の例に示された値にバインドされると仮定します。
次の呼び出しを考慮します。
set $cc := fn-bea:replace-value($cc, "name/last", "Jones");
呼び出しは、以下に示すように名前の最後の子の内容を Smith から Jones に変更します。
<customer ssn="XXX-XX-XXX">
<name>
<first>Thomas</first>
<last>Jones</last>
</name>
...
<customer>
次の呼び出しを考慮します。
set $cc := fn-bea:replace-value($cc, "@ssn", "YYY-YY-YYYY");
呼び出しは、以下に示すように ssn 属性の内容を XXX-XX-XXX から YYY-YY-YYYY に変更します。
<customer ssn="YYY-YY-YYYY">
<name>...</name>
<address>...</address>
<address>...</address>
<orders>...<orders>
<customer>
次の呼び出しを考慮します。
set $cc := fn-bea:replace-value($cc, "name/first", ());
呼び出しは、以下に示すように name の first 子要素の内容を削除します。
<customer ssn="XXX-XX-XXX">
<name>
<first/>
<last>Smith</last>
</name>
...
<customer>
first 要素が空である場合、結果は以下に示すように空になります。
<customer ssn="XXX-XX-XXX"> <name> <first xsi:nil="true"/> <last>Smith</last> </name> ... <customer>
| 2008 年 04 月 10 日に 11:47 に Confluence によって作成されたドキュメント |